// 消息来源 0-逻辑层 1-表现层
package battleco

import (
	"wails/schema/enums/battleenum"
)

// 位置: 0全局 1域 2表现

type S表现层消息 struct {
}

// 位置: 0全局 1域 2表现
// S表现层消息_效果创建
// @schema_export --ident=schema --json --_type=表现层消息 --消息来源=0
// @schema_go
// @cache_ts
// @alias 消息_效果创建
type S表现层消息_效果创建 struct {
	S表现层消息

	// @alias 配置
	P配置 string `link:"效果"`

	// @alias 所在域
	S所在域 X效果域
}

// @schema_export --ident=schema --json --_type=表现层消息 --消息来源=0
// @schema_go
// @cache_ts
// @alias 消息_单位创建
type S表现层消息_单位创建 struct {
	S表现层消息
	// @alias 配置
	P配置 string `link:"单位"`
}

// @schema_export --ident=schema --json --_type=表现层消息 --消息来源=1
// @schema_go
// @cache_ts
// @alias 消息_单位死亡
type S表现层消息_单位死亡 struct {
	S表现层消息
}

// @schema_export --ident=schema --json --_type=表现层消息 --消息来源=1
// @schema_go
// @cache_ts
// @alias 消息_技能效果
type S表现层消息_技能效果 struct {
	S表现层消息

	// @alias 配置
	P配置 string `link:"技能"`

	// @alias 子事件
	Z子事件 battleenum.ActorSubAbilEffect

	// @alias 所在域
	S所在域 J技能域
}

// @schema_export --ident=schema --json --_type=表现层消息 --消息来源=1
// @schema_go
// @cache_ts
// @alias 消息_单位移动
type S表现层消息_单位移动 struct {
	S表现层消息

	// @alias 配置
	P配置 string `link:"单位"`

	// @alias 子事件
	Z子事件 battleenum.ActorSubMovement
}

// 活力发生变化时触发
// @schema_export --ident=schema --json --_type=表现层消息 --消息来源=1
// @schema_go
// @cache_ts
// @alias 消息_单位活力
type S表现层消息_单位活力 struct {
	S表现层消息
	// @alias 配置
	P配置 string `link:"单位"`
}

// @schema_export --ident=schema --json --_type=表现层消息 --消息来源=0
// @schema_go
// @cache_ts
// @alias 消息_卡片激活
type S表现层消息_卡片激活 struct {
	S表现层消息
	// @alias 配置
	P配置 string `link:"卡片"`

	// @alias 卡槽标识
	K卡槽标识 string
}

// @schema_export --ident=schema --json --_type=表现层消息 --消息来源=0
// @schema_go
// @cache_ts
// @alias 消息_卡片抑制
type S表现层消息_卡片抑制 struct {
	S表现层消息
	// @alias 配置
	P配置 string `link:"卡片"`

	// @alias 卡槽标识
	K卡槽标识 string
}

// @schema_export --ident=schema --json --_type=表现层消息 --消息来源=0
// @schema_go
// @cache_ts
// @alias 消息_武器创建
type S表现层消息_武器创建 struct {
	S表现层消息
	// @alias 配置
	P配置 string `link:"武器"`
}

// @schema_export --ident=schema --json --_type=表现层消息 --消息来源=0
// @schema_go
// @cache_ts
// @alias 消息_武器移除
type S表现层消息_武器移除 struct {
	S表现层消息
	// @alias 配置
	P配置 string `link:"武器"`
}

// @schema_export --ident=schema --json --_type=表现层消息 --消息来源=1
// @schema_go
// @cache_ts
// @alias 消息_武器
type S表现层消息_武器 struct {
	S表现层消息
	// @alias 配置
	P配置 string `link:"武器"`

	// @alias 子事件
	Z子事件 battleenum.W武器阶段

	// 0-标识不限 1-表示第一次攻击
	// @alias 连击索引
	L连击索引 int
}

// 活力发生变化时触发
// @schema_export --ident=schema --json --_type=表现层消息 --消息来源=1
// @schema_go
// @cache_ts
// @alias 消息_单位受击
type S表现层消息_单位受击 struct {
	S表现层消息
	// @alias 配置
	P配置 string `link:"单位"`
}

// @schema_export --ident=schema --json --_type=表现层消息 --消息来源=1
// @schema_go
// @cache_ts
// @alias 消息_单位闲置
type S表现层消息_单位闲置 struct {
	S表现层消息
	// @alias 配置
	P配置 string `link:"单位"`
}

// 活力发生变化时触发
// @schema_export --ident=schema --json --_type=表现层消息 --消息来源=1
// @schema_go
// @cache_ts
// @alias 消息_活力
type S表现层消息_活力 struct {
	S表现层消息
	// @alias 配置
	P配置 string `link:"效果"`
	//
	// @alias 子事件
	Z子事件 battleenum.ActorSubVital
}

// 冷却时间
// @schema_export --ident=schema --json --_type=表现层消息 --消息来源=1
// @schema_go
// @cache_ts
// @alias 消息_冷却
type S表现层消息_冷却 struct {
	S表现层消息

	// 标识_位置关联
	// @alias 配置
	P配置 string
	//
	// @alias 子事件
	Z子事件 battleenum.E冷却阶段
}

// @schema_export --ident=schema --json --_type=表现层消息 --消息来源=2
// @schema_go
// @cache_ts
// @alias 消息_表现对象创建
type S表现层消息_表现对象创建 struct {
	S表现层消息
}

// @schema_export --ident=schema --json --_type=表现层消息 --消息来源=2
// @schema_go
// @cache_ts
// @alias 消息_表现对象摧毁
type S表现层消息_表现对象摧毁 struct {
	S表现层消息
}

// 域移除后，域中的表现对象会收到[表现对象被孤立]的消息
// 场景：单位被埋葬时，销毁表现对象
// 场景：
// @schema_export --ident=schema --json --_type=表现层消息 --消息来源=2
// @schema_go
// @cache_ts
// @alias 消息_表现对象被孤立
type S表现层消息_表现对象被孤立 struct {
	S表现层消息
}

// @schema_export --ident=schema --json --_type=表现层消息 --消息来源=2
// @schema_go
// @cache_ts
// @alias 消息_动画完成
type S表现层消息_动画完成 struct {
	S表现层消息
	// @alias 动画名称
	D动画名称 string
}

type J技能域 int

const (
	J技能域_源单位 J技能域 = iota
	J技能域_目标单位
)

type X效果域 int

const (
	X效果域_效果 X效果域 = iota
	X效果域_起源单位
	X效果域_施法单位
	X效果域_施法单位外层
	X效果域_来源单位
	X效果域_来源单位外层
	X效果域_目标单位
	X效果域_目标单位外层
)
